package util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;

public class Utils {

	public static Date string2Date(String data) {
		if(getDataSemFormat(data).equals("")) {
			return null;
		}
		GregorianCalendar calendario = new GregorianCalendar();

		String[] dataSplit = data.split("/");
		calendario.set(GregorianCalendar.DATE, Integer.parseInt(dataSplit[0]));
		calendario.set(GregorianCalendar.MONTH, Integer.parseInt(dataSplit[1])-1);
		calendario.set(GregorianCalendar.YEAR, Integer.parseInt(dataSplit[2]));

		DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
		data = formatoData.format(calendario.getTime());
		Date date_data = null;
		try {
			if(!getDataSemFormat(data).equals("") && !getDataSemFormat(data).equals(null))
				date_data = formatoData.parse(data);
		} catch (ParseException e) {
			e.printStackTrace(); 
		}

		return date_data;
	}

	public static String date2String(Date data) {
		String str_data = "";
		DateFormat formatoData = null;

		if(data != null) {

			GregorianCalendar calendario = new GregorianCalendar();
			calendario.setTime(data);

			formatoData = new SimpleDateFormat("dd/MM/yyyy");				
			str_data = formatoData.format(data);
		}
		return str_data;		
	}

	public static String getDataSemFormat(String data) {
		return data.replaceAll("[\\/_ -]", "");
	}

	public static String campoObrigatorio(JFormattedTextField txt_data, String rotulo) {
		if(isCampoVazio(txt_data.getText())) {
			txt_data.setBackground(Constantes.ERRO);
			return " - Campo " + rotulo + " vazio.\n";
		}

		txt_data.setBackground(Constantes.OK);
		return "";
	}

	public static boolean isCampoVazio(String data) {
		return getDataSemFormat(data).equals("");
	}

	public static String campoObrigatorio(JTextField txt, String rotulo){
		if(isCampoVazio(txt.getText())) {
			txt.setBackground(Constantes.ERRO);
			return " - Campo " + rotulo + " vazio.\n";
		}

		txt.setBackground(Constantes.OK);
		return "";
	}
	
	public static void mostraErro(JFrame framePai, String mensagem){
		JOptionPane.showMessageDialog(
				framePai, 
				mensagem,
				"ERRO",
				JOptionPane.ERROR_MESSAGE);	
	}

	public static void mostraErro(JInternalFrame framePai, String mensagem){
		JOptionPane.showMessageDialog(
				framePai, 
				mensagem,
				"ERRO",
				JOptionPane.ERROR_MESSAGE);	
	}

	public static void mostraMensagem(JInternalFrame framePai, String mensagem){
		JOptionPane.showMessageDialog(
				framePai, 
				mensagem,
				"",
				JOptionPane.OK_OPTION);
	}

	public static boolean confirmaMensagem(JInternalFrame framePai, String mensagem){
		int valor = JOptionPane.showConfirmDialog(
				framePai, 
				mensagem,
				"ERRO",
				JOptionPane.OK_CANCEL_OPTION);
		if(valor == JOptionPane.OK_OPTION)
			return true;
		
		return false;
	}
	
	public static MaskFormatter getFormatter(){
		MaskFormatter mf = null;
		
		try {
			mf = new MaskFormatter("##/##/####");
		}
		catch (Exception e) {
			e.printStackTrace();		
		}
		if(mf != null) {
			mf.setPlaceholderCharacter('_');
		}		
		return mf;
	}
}
